from enum import Enum


class BusStatus(str, Enum):
    NEW: str = 'new'
    PROCESSING: str = 'processing'
    ERROR: str = 'error'
    DELIVERED: str = 'delivered'


class LocationClass(str, Enum):
    """
    **Классификация** типов местоположения, обозначающий свойства типов местоположения
    - partner - Зона внешняя (например поставщика товаров)
    - place - Статичный класс местоположения в пространстве, например ячейка на складе или магазине
    - zone - Зона, которая отвечает за агрегацию свойств местоположений, например стратегия приемки или отгрузки
    - resource - Статически/динамическое местоположение означающее ресурс с помощью которого происзодит перемещение, например Тележка, или штабелер или что то иное
    - package - Динамическое местоположение, например паллета коробка
    - lost - класс типа местоположения отвечающий аккумулирование расхождений в рамках набора локаций, может быть ограничен зоной, магазином или компанией
    - inventory - класс типов ячеек, которы аккумулирует расхождения при легальной инвентаризации
    - scrap - класс хранение некондиционного товара
    - scraped - списанный товар (уже утиилизарованный)
    - buffer - класс типов ячеек отвечающий за буфер приемки например за зону приемки или зону отгрузки
    -
    """
    PARTNER:    str = "partner"
    PLACE:      str = "place"
    RESOURCE:   str = "resource"
    PACKAGE:    str = "package"
    ZONE:       str = "zone"
    LOST:       str = "lost"
    INVENTORY:  str = "inventory"
    SCRAP:      str = "scrap"
    SCRAPPED:   str = "scrapped"
    BUFFER:     str = "buffer"


class VirtualLocationClass(str, Enum):
    PARTNER: str = "partner"        # Зона внешняя (например поставщика товаров)
    LOST: str = "lost"              # Класс типа местоположения отвечающий аккумулирование расхождений в рамках набора склада
    INVENTORY: str = "inventory"    # Класс типов ячеек, которы аккумулирует расхождения при легальной инвентаризации
    SCRAPPED: str = "scrapped"      # Списанный товар (уже утиилизарованный)\


class PhysicalLocationClass(str, Enum):
    PLACE: str = "place"            # Статичный класс местоположения в пространстве, например ячейка на складе или магазине
    RESOURCE: str = "resource"      # Статически/динамическое местоположение означающее ресурс с помощью которого происзодит перемещение, например Тележка, или штабелер или что то иное
    PACKAGE: str = "package"        # Динамическое местоположение, например паллета коробка
    ZONE: str = "zone"              # Зона, которая отвечает за агрегацию свойств местоположений, например стратегия приемки или отгрузки
    SCRAP: str = "scrap"            # Класс хранение некондиционного товара
    BUFFER: str = "buffer"          # Класс типов ячеек отвечающий за буфер приемки например за зону приемки или зону отгрузки

